package com.cskaoyan.javase.array._5operation._3retrieve;

/**
 * @description: 数组元素的查找
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 增删改查攻城狮,crud攻城狮("Java高级开发攻城狮")
 * c: create 增
 * r: retrieve 查找
 * u: update 更新,修改
 * d: delete 删除
 *
 * 数组元素的查找:
 *  搜索整个数组,找到对应元素,如果能够找到返回它的下标,如果没有找到元素就返回-1
 *
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 2213, 2, 3, 24, 21, 3, 123, 1, 1, 213, 12, 312, 3, 324, 112, 1, 121};
        System.out.println(arr.length - 1 - 1);
        System.out.println(retrieveLast(arr, 1));
        System.out.println(retrieveFirst(arr, 1));
    }

    //该方法查找数组当中的最后一个目标元素,返回它的下标
    //该方法返回数组元素的下标,需要两个参数:数组,目标元素
    public static int retrieveLast(int[] arr, int target) {
        //先定义一个int变量,用来接收可能存在的元素的下标
        //初始值是-1
        int targetIndex = -1;
        //遍历,然后逐个比较
        for (int i = 0; i < arr.length; i++) {
            //使用if比对元素
            if (arr[i] == target) targetIndex = i;
        }
        return targetIndex;
    }

    //该方法是查找元素第一次出现位置的下标
    public static int retrieveFirst(int[] arr, int target) {
        //先定义一个int变量,用来接收可能存在的元素的下标
        //初始值是-1
        int targetIndex = -1;
        //遍历,然后逐个比较
        for (int i = 0; i < arr.length; i++) {
            //使用if比对元素
            if (arr[i] == target) {
                targetIndex = i;
                break;
            }
        }
        return targetIndex;
    }
}
